package com.mycompany.service;

import java.util.List;

import javax.jws.WebService;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;

import com.mycompany.exception.ParamException;
import com.mycompany.model.ControlAcceso;

/**
 * Interface Manager para operaciones CRUD de objetos control de acceso
 * @author javachavez@gmail.com
 *
 */
@WebService
@Path("/controlacceso")
public interface ControlAccesoManager{ //  extends GenericManager<ControlAcceso, Long> {

    /**
	 * Obtiene lista de Control de accesos
	 * @return lista de control de accesos
	 */
    @GET
    @Path("/readAll")
    List<ControlAcceso> readAll();
   
   /** 
	* Obtiene Control de acceso
    * @param id del control de acceso a obtener
    * @return control de accesos
    */
    @GET
    @Path("/read/{id}")
    ControlAcceso read(@PathParam("id") Long id);

   /**
    * Borra control de acceso dado segun parametro
    * @param id del control de acceso a borra
    * @return boolean si se ha borrado la lista de acceso
    */
    @DELETE
    @Path("/remove/{id}")
    boolean  remove(@PathParam("id") Long id);
   
    /**
     * Crea control de acceso dado segun parametro
     * @param ca control de acceso a crear
     * @return ControlAcceso creado.
     * @throws Exception 
     */
     @POST
     @Path("/create") 
     ControlAcceso create (ControlAcceso ca) throws ParamException;
     
     /**
      * Crea control de acceso dado segun parametro
      * @param ca control de acceso a crear
      * @return ControlAcceso creado.
     * @throws Exception 
      */
     @PUT
     @Path("/update")
     boolean update(ControlAcceso caParam) throws ParamException;
}